const http = require("http");
const fs = require("fs");

const app = http.createServer((req,res)=>{
    // 需求：提供add接口，post请求，保存{ name: "",skinname: "" }保存到data.json中
    // 的数组中去。
    /**
     * 实现思路
     * 1、在createServer的回调函数中，判断用户请求的方式和请求地址，是否符合要求
     *      注意：请求方式获取到的是大写字母
     * 2、开始接收数据，用到2个事件，data和end事件
     * 3、数据接收完成后，把参数转换为js对象
     * 4、将数据添加到data.json中的数组中即可
     *  4-1、先获取到data.json中的数组
     *  4-2、将接收数据通过push方法添加到数组中
     *  4-3、将新的数组，写入到data.json中
     * 
     * */ 
    
    // 1、判断请求的方式和请求地址，是否符合要求
    if(req.method == "POST"&&req.url == "/add"){
        let result = "";
        // 2、接收数据
        req.on("data",(chunk)=>{
            // 开始接收数据
            result+=chunk;
        })
        req.on("end",()=>{
            // 数据接收完成
            console.log("数据接收成功：",result);
            // 3、将接收到的数据转换为js对象
            let query = new URLSearchParams(result);
            let obj = {
                name: query.get("name"),
                skinname: query.get("skinname")
            }
            // console.log(16,obj);
            ///4、将数据添加到data.json中的数组中即可
            ///4-1、先获取到data.json中的数组
            // 4-2、将obj通过push方法添加到数组中
            // 4-3、将新的数组，写入到data.json中
            fs.readFile("./db/data.json","utf-8",(err,data)=>{
                if(err){
                    console.log("读取失败：",err);
                    return
                }
                let arr = JSON.parse(data);
                arr.push(obj);
                // console.log(34,arr);
                fs.writeFile("./db/data.json",JSON.stringify(arr),(err)=>{
                    if(err){
                        console.log("写入失败：",err);
                        return
                    }
                    console.log("写入成功！");
                })
            })

        })
    }
    res.end("ok")
})

app.listen("8083",()=>{
    console.log("服务器启动成功：http://localhost:8083");
})